﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using XamlMvp;
using MvpPhoneApplication.Views;

namespace MvpDataboundApplication.Presenters
{
    public class MainPresenter : PagePresenter<IMainView>
    {
        public MainPresenter(IMainView view, MainViewModel model)
            : base(view)
        {
            View.Model = model;
            View.Loaded += Loaded;
            View.NavigatedFrom += NavigatedFrom;
            View.ItemSelectionChanged += ItemSelectionChanged;
            
        }

        // Load data for the ViewModel Items
        private void Loaded(object sender, RoutedEventArgs e)
        {
            if (!View.Model.IsDataLoaded)
            {
                View.Dispatcher.BeginInvoke(View.Model.LoadData);
            }
        }

        void NavigatedFrom(object sender, XamlMvp.Controls.MvpNavigationEventArgs e)
        {
            if(!e.IsTombstone) e.State.DeHydrate<ItemViewModel>(View.Model.SelectedItem);
        }

        // Handle selection changed on ListBox
        void ItemSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            NavigateTo("Details");
        }

        protected override void ReleaseView()
        {
            View.Loaded -= Loaded;
            View.NavigatedFrom -= NavigatedFrom;
            View.ItemSelectionChanged -= ItemSelectionChanged;
        }
        
    }
}
